在使用payfast仪表板生成的HTML代码后,如何将通知URL集成到我的代码中?
我有随机生成的按钮和运输表格 这就是我在代码
的形式部分所拥有的按钮:
<script language="JavaScript" type="text/javascript">
function click_8eb310a4f3ae8dcc6556286f70cbd30f( aform_reference ) {
var aform = aform_reference;
aform['amount'].value = Math.round( aform['amount'].value*Math.pow( 10,2 ) )/Math.pow( 10,2 );
aform['custom_quantity'].value = aform['custom_quantity'].value.replace( /^\s+|\s+$/g,"" );
if( !aform['custom_quantity'].value || 0 === aform['custom_quantity'].value.length || /^\s*$/.test( aform['custom_quantity'].value ) ) {
alert ( 'A quantity is required' );
return false;
}
for( i=0; i<aform.elements.length; i++ )
if( aform.elements[i].className == 'shipping' )
aform.elements[i].value = aform.elements[i].value.replace( /^\s+|\s+$/g,"" );
var cont = true;
for( i=0; i<aform.elements.length; i++ ) {
if( aform.elements[i].className != 'shipping' )
continue;
if( aform.elements[i].name == 'line2' )
continue;
if( ! cont )
continue;
if( aform.elements[i].name == 'country' ) {
if( aform.elements[i].selectedIndex == 0 ) {
cont = false;
alert ( 'Select a country' );
}
} else {
if( 0 === aform.elements[i].value.length || /^\s*$/.test( aform.elements[i].value ) ) {
cont = false;
alert ( 'Complete all the mandatory address fields' );
}
}
}
if( ! cont )
return cont;aform['amount'].value *= parseInt( aform['custom_quantity'].value );
var shipping_info = '';
for( i=0; i<aform.elements.length; i++ )
if( aform.elements[i].className == 'shipping' )
shipping_info+=' '+aform.elements[i].name+' ['+aform.elements[i].value+']';
aform['item_description'].value+= ' Shipping Information '+shipping_info
}
</script>
HTML:
<form action="https://www.payfast.co.za/eng/process" name="form_8eb310a4f3ae8dcc6556286f70cbd30f" onsubmit="return click_8eb310a4f3ae8dcc6556286f70cbd30f( this );" method="post">
<input type="hidden" name="cmd" value="_paynow">
<input type="hidden" name="receiver" value="12700124">
<input type="hidden" name="item_name" value="item_name">
<input type="hidden" name="amount" value="2.00">
<input type="hidden" name="item_description" value="">
<input type="hidden" name="return_url" value="return_url">
<input type="hidden" name="cancel_url" value="cancel_url">
答案 0 :(得分:0)
PayFast HTML生成按钮的ITN 未发送。
按钮与自定义集成不同,它使用cmd
和receiver
个隐藏字段,而不是merchant_id
和merchant_key
隐藏字段(根据开发人员documentation)。
您还需要添加notify_url
,以便PayFast知道ITN返回变量的发送位置,然后可以通过notify_url
脚本中的全局$ _POST变量访问该变量。
您需要将表单更改为以下内容才能收到ITN:
<form action="https://www.payfast.co.za/eng/process" name="form_8eb310a4f3ae8dcc6556286f70cbd30f" onsubmit="return click_8eb310a4f3ae8dcc6556286f70cbd30f( this );" method="post">
<!-- new merchant identifier fields -->
<input type="hidden" name="merchant_id" value="10000102">
<input type="hidden" name="merchant_key" value="46f0cd694581a">
<!-- Existing fields from the button -->
<input type="hidden" name="item_name" value="item_name">
<input type="hidden" name="amount" value="2.00">
<input type="hidden" name="item_description" value="">
<input type="hidden" name="return_url" value="return_url">
<input type="hidden" name="cancel_url" value="cancel_url">
<!-- new notify_url -->
<input type="hidden" name="notify_url" value="https://yoursite.com/notify/">
</form>
可选更改:
由于您现在将收到ITN,因此无需使用生成的JavaScript将运送字段编译为单个字符串,以便在item_description
隐藏字段中使用。相反,您可以使用PayFast custom_str
表单字段来捕获用户的地址。
<input type="text" name="custom_str1" placeholder="Address line 1">