2012-10-19 2 views
0

나는 합창단의 웹 페이지를 일시적으로 업데이트하고 PayPal API 사용을 변경해야합니다. 여기 내가 성취해야 할 것이있다.총 주문 수량 할인에 PayPal API를 사용하는 방법

우리는 콘서트 티켓을 20 달러 (성인용) 및 10 달러 (학생용) 1 ~ 2 개에 판매하고 싶습니다. 성인 및/또는 학생의 조합에서 수량 3 이상. 가격은 $ 16.50 (성인) 및 $ 8.25 (학생)이어야합니다.

Examples (just to be absolutely clear): 
1 adult ticket : $20 
2 adult tickets: $40 
3 adult tickets: $49.50 
4 adult tickets: $66 
etc ... 

1 student ticket: $10 
2 student tickets: $20 
3 student tickets $24.75 
4 student tickets: $33 
etc ... 

1 adult + 1 student: $30 
1 adult + 2 student: $33 
2 adult + 1 student: $41.25 
etc ... 

이전에는 웹 사이트에 다양한 조합의 장바구니에 추가 버튼이있었습니다. PayPal은 수량을 변경할 수있는 자체 양식을 제공하기 때문에 고객에게 혼란스럽고 신뢰할 수 없습니다.

고객이 현재 구입할 수있는 모든 장바구니 버튼을 고객이 성인용 및 학생용 티켓의 수량을 모두 지정할 수있는 페이지로 연결되는 지금 구입 버튼 하나로 대체하고자합니다 (둘 다 0이 아닌 한) 위에 설명 된 가격으로 지불을 진행하십시오.

나는 PayPal API을보고 할인과 관련된 몇 가지 필드 (표 3 참조)를 보았지만 원하는대로 할 수있는 조합이 있는지는 분명하지 않습니다.

도움을 주시면 감사하겠습니다.

답변

0

PayPal 지원 및 샘플 코드 검색에 대한 도움으로 베타 버전에서 만족스럽게 작동하는 것으로 보이는 다음 코드를 제안했습니다. keydown 로직은 StackOverflow에 대한 또 다른 질문에서 왔습니다.

이 코드는 성인용 및 학생용 수량 입력란 쌍을 만듭니다. 할인 규칙은 고객이 수량을 입력하여 입력 위에 소계 문자열을 표시 할 때 적용됩니다. 고객이 "지금 구입"을 클릭하면 합계가 단일 항목으로 전송되어 지불 양식이 생성됩니다. S & H 수수료는 거래 비용을 충당하기위한 합계의 백분율로도 추가됩니다.

자세한 코딩 스타일에 사과드립니다. JavaScript는 평소 사용하는 언어가 아닙니다. 개선을위한 제안은 환영합니다.

누군가가 유용하다고 생각합니다.

경고 -이 코드는 컴퓨터 기술에 대한 형벌로 인해 변경 될 수 있습니다. 구입 후 감사의 일부 형식이 아닌 유효한 거래에는 사용하지 마십시오.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script><script type="text/javascript">// <![CDATA[ 
    $(document).ready(function() { 
    // Enforce numeric values only. 
    $('#nadult, #nstudent').keydown(function(event) { 
     // Allow: backspace, delete, tab, escape, and enter 
     if (event.keyCode == 46 || event.keyCode == 8 || event.keyCode == 9 || event.keyCode == 27 || event.keyCode == 13 || 
      // Allow: Ctrl+A 
      (event.keyCode == 65 && event.ctrlKey === true) || 
      // Allow: home, end, left, right 
      (event.keyCode >= 35 && event.keyCode <= 39)) { 
       // let it happen, don't do anything 
       return; 
     } 
     else { 
      // Ensure that it is a number and stop the keypress 
      if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) { 
       event.preventDefault(); 
      } 
     } 
    }); 
    $('#nadult, #nstudent').keyup(function(event) { 
     compute_form_inputs(false); 
     }); 
    }); 

    function compute_form_inputs(is_submit) { 
     // called when buyer click "Buy now" after filling in quantities of adult and student tickets 
     var base_adult_price = 20.00; 
     var disc_adult_price = 16.50; 
     var student_discount = 0.50; 
     var handling_fee = 0.05 // Five percent to cover cost of transaction; 
     var nadult = $('#nadult').val(); 
     var nstudent = $('#nstudent').val(); 
     var iadult = parseInt(nadult); 
     if (isNaN(iadult)) { iadult = 0 } 
     var istudent = parseInt(nstudent); 
     if (isNaN(istudent)) { istudent = 0 } 
     var itickets = istudent + iadult; 

     if (is_submit && itickets <= 0) { 
      // call off the purchase 
      alert("Please specify at least one adult or student ticket to purchase!"); 
      return false; 
      } 
     else if (itickets < 3) { 
      var adult_price = base_adult_price; 
     } 
     else { 
      var adult_price = disc_adult_price; 
     } 

     var student_price = adult_price * student_discount; 

     // Build string components that show how many of each were purchased. 
     // These go into the PayPal item_name field. 
     if (iadult > 0) { 
      var adult_info = nadult + " Adult @ $" + adult_price.toFixed(2) + " ea."; 
     } 
     else { 
      var adult_info = ""; 
     } 

     if (istudent > 0) { 
      var student_info = nstudent + " Student @ $" + student_price.toFixed(2) +"ea."; 
     } 
     else { 
      var student_info = ""; 
     } 

     if (iadult>0 && istudent>0) { 
      var separator = " + "; 
     } 
     else { 
      var separator = ""; 
     } 


     var item_name_string = "ACS Flex tickets: " + adult_info + separator + student_info; 
     var amount = iadult * adult_price + istudent * student_price; 
     //alert(amount); 
     var handling = (amount * handling_fee).toFixed(2); 


     //alert(handling); 
     $('input[name="item_name"]').val(item_name_string); 
     $('input[name="amount"]').val(amount); 
     $('input[name="handling"]').val(handling); 
     $('input[name="custom"]').val(item_name_string); 
     // alert("about to change label") 
     $('#subtotal').text(adult_info + separator + student_info + " = $" + amount.toFixed(2)) 
     return true; 
    }; 

// ]]></script> 


<form name="_xclick" action="https://www.paypal.com/cgi-bin/webscr" onsubmit=compute_form_inputs(true) method="post"> 
<div style="color: green; margin-bottom: 10px;"> 
<strong>Subtotal:&nbsp;<label id="subtotal" value=""></strong><super>*</super><br /> 
</div> 
<div> 
<input type="text" id="nadult" value="0" size="3"> <strong> Adult </strong>&nbsp; 
<input type="text" id="nstudent" value="0" size="3"> <strong> Student </strong>&nbsp; 
<input type="hidden" name="cmd" value="_xclick"> 
<input type="hidden" name="business" value="[email protected]"> 
<input type="hidden" name="currency_code" value="USD"> 
<input type="hidden" name="item_name" value=""> 
<input type="hidden" name="handling" value=""> 
<input type="hidden" name="amount" value=""> 
<input type="hidden" name="custom" value=""> 
<input type="image" src="http://www.paypal.com/en_US/i/btn/btn_buynow_LG.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"> 
</div> 
</form> 
<br /> 
<small> * 5% transaction fee will be added to online and credit card purchase to cover bank fees. </small> 
0

다음 코드를 단추 코드에 추가하십시오. 할인율은 백분율로 17.5 %입니다. 할인율이 첫 번째 항목에 적용되지 않도록 0이있는 첫 번째 줄이 추가됩니다.

<input type="hidden" name="discount_rate" value="0"> 
<input type="hidden" name="discount_rate2" value="17.5"> 

아니면 버튼을 페이팔의 경우

은 3 절에서 고급 변수에 추가 할 호스트

discount_rate=0 
discount_rate2=17.5 

출처 : https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/Appx_websitestandard_htmlvariables/

관련 문제